Como ver conflictos en un commit de merge.
Cuando hacemos un git show de un commit podemos ver las modificaciones de dicho commit, si es un commit de merge normalmente no vemos nada a menos que usemos la opción -m
En realidad cuando hacemos un git show sobre un commit de un merge y vemos algo (sin usar la opcion -m) eso indica que hubo un conflicto en el merge y los cambios que vemos son la resolución de dicho conflicto
NOTA: hay casos en los que puede haber un conflicto y aún así no mostrarse nada, como por ejemplo si una rama borra un archivo y la otra lo actualiza, en ese cambio se producirá un conflicto, pero el git show no mostrará nada ya que el resultado final es el contenido completo del archivo (el modificado) o la desaparición completa del archivo
Para comprobar si un merge tuvo conflictos, podemos hacerlo de manera simple con este comando:
git show --name-status <id commit>
Si hubo conflictos veremos el indicador MM al lado del archivo que tuvo conflictos:
El indicador MM nos dice que hubo cambios en ese archivo en los dos commits que mergeamos y por lo tanto hubo un conflicto (no siempre tiene que ser asi, ya que se puede modificar el mismo archivo sin que haya conflicto)
En este caso podemos usar el siguiente comando para ver los cambios definitivos del archivo:
git show dc95b188c8cb92e88f10f97e916ecd436e456af1 -- README.md
Si queremos ver los cambios individuales de cada commit antes del merge lo hariamos asi:
git show -m dc95b188c8cb92e88f10f97e916ecd436e456af1 -- README.md
NOTA: no hace falta la opción -m para saber exactamente de que archivos vienen los cambios, cuando hacemos el "git show" sin -m, en la lista de cambios podemos ver que los simbolos "+" aparecen en dos columnas distintas, cada una de estas columnas hace referencia a uno de los dos archivos del merge, de manera que podemos ver que lineas vienen de un archivo y que lineas del otro:
Git | show | conflicts | merge